/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import classes.ItensProduto;
import classes.Produto;
import classes.Saida;
import dao.DaoSaida;
import dao.IDaoSaida;
import erro.ConexaoException;
import erro.ConsultaException;
import erro.DaoException;
import erro.GeralException;
import java.util.ArrayList;

/**
 *
 * @author George
 */
public class ControladorSaida {

    Saida saida = new Saida();
    ItensProduto it = new ItensProduto();
    Produto prod = new Produto();
    private IDaoSaida daoSaida = new DaoSaida();

    public ControladorSaida() {

        this.daoSaida = new DaoSaida();
    }

    public void validar(Saida saida) throws GeralException {
        if (saida.getQtdSaidaItens().toString().trim().equals("")) {
            throw new GeralException("Informe a quantidade de itens!");
        }
    }

    public void inserir(Saida saida, ItensProduto it, Produto prod) throws GeralException {
        try {
            this.daoSaida.inserir(saida, it, prod);
        } catch (ConexaoException ex) {
            throw new GeralException("Nao foi possivel conectar-se ao banco de dados. Informe ao Administrador!");
        } catch (DaoException e) {
            throw new GeralException("Não foi possivel inserir a Saida do Produto! Informe ao Administrador!");
        }
    }
    
     /**
     * Trata os possiveis erros na hora da exclusão
     * @param saida, ip
     * @throws GeralException 
     */
    public void deletar(Saida saida, ItensProduto ip, Produto prod) throws GeralException {
        try {
            this.daoSaida.deletar(saida, ip, prod);
        } catch (ConexaoException ex) {
            throw new GeralException("Nao foi possivel conectar-se ao banco de dados.");
        } catch (DaoException ex) {
            throw new GeralException("Não foi possivel deletar a Saida do Produto! Informe ao Administrador!");
        }
    }
    
    
    
    /**
     * Trata os possiveis erros na hora da pesquisa
     * @param saida
     * @return
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public ArrayList<Saida> pesquisarSaida(Saida saida) throws ConexaoException, ConsultaException {
        return (ArrayList<Saida>) this.daoSaida.pesquisarSaida(saida);
    }
    
    public ArrayList<Saida> listarSaida(Saida saida) throws ConexaoException, ConsultaException {
        return (ArrayList<Saida>) this.daoSaida.listarSaida();
    }
    
}
